package com.netty.chapter07_messagepack;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.handler.codec.MessageToMessageDecoder;
import org.msgpack.MessagePack;

import java.util.List;

/**
 * Package Name:com.netty.chapter07_messagepack
 * Description: 自定义netty messagepack 编码器
 * Date:2016/9/3 14:11
 * Copyright (c) 2016, zhongmu@suneee.com All Rights Reserved.
 */
public class Netty02_msg_pack_self_encoder extends MessageToByteEncoder<Object> {


    /**
     * final类不能被继承，没有子类，final类中的方法默认是final的。
     * final方法不能被子类的方法覆盖，但可以被继承。
     * final成员变量表示常量，只能被赋值一次，赋值后值不再改变。
     * final不能用于修饰构造方法。
     * 父类的private成员方法不能被子类使用，故private类型方法默认为final类型。
     *
     * @param arg0
     * @param arg1
     * @param arg2
     * @throws Exception
     */
    @Override
    protected void encode(ChannelHandlerContext arg0, Object arg1, ByteBuf arg2) throws Exception {

        MessagePack messagePack = new MessagePack();
        //序列化开始...
        byte[] write = messagePack.write(arg1);
        arg2.writeBytes(write);
    }
}
